import { loadingType } from './type'
import { baseURL } from '@/config/app.js'

import store from '@/store'

//所在环境
let client = null
// #ifdef MP-WEIXIN
client = 1
// #endif

// #ifdef H5
client = isWeixinClient() ? 2 : isAlipayEnv() ? 8 : 6
// #endif

// #ifdef MP-ALIPAY
client = 7
// #endif

// #ifdef APP-PLUS
client = 3
uni.getSystemInfo({
    success: (res) => {
        client = res.platform == 'ios' ? 3 : 4
    },
    fail: (res) => {
        client = 3
    }
})
// #endif
export { client }

//节流
export const trottle = (func, time = 1000, context) => {
    let previous = new Date(0).getTime()
    return function (...args) {
        let now = new Date().getTime()
        if (now - previous > time) {
            func.apply(context, args)
            previous = now
        }
    }
}

//判断是否是支付环境，这里主要是判断支付宝生活号
export function isAlipayEnv() {
    const userAgent = navigator.userAgent.toLowerCase()
    return userAgent.indexOf('alipayclient') > -1
}

//判断是否为微信环境
export function isWeixinClient() {
    var ua = navigator.userAgent.toLowerCase()
    if (ua.match(/MicroMessenger/i) == 'micromessenger') {
        //这是微信环境
        return true
    } else {
        //这是非微信环境
        return false
    }
}

//判断是否为安卓环境
export function isAndroid() {
    let u = navigator.userAgent
    return u.indexOf('Android') > -1 || u.indexOf('Adr') > -1
}

//获取url后的参数  以对象返回
export function strToParams(str) {
    var newparams = {}
    for (let item of str.split('&')) {
        newparams[item.split('=')[0]] = item.split('=')[1]
    }
    return newparams
}

//重写encodeURL函数
export function urlencode(str) {
    str = (str + '').toString()
    return encodeURIComponent(str)
        .replace(/!/g, '%21')
        .replace(/'/g, '%27')
        .replace(/\(/g, '%28')
        .replace(/\)/g, '%29')
        .replace(/\*/g, '%2A')
        .replace(/%20/g, '+')
}

//一维数组截取为二维数组

export function arraySlice(data, array = [], optNum = 10) {
    data = JSON.parse(JSON.stringify(data))
    if (data.length <= optNum) {
        data.length > 0 && array.push(data)
        return array
    }
    array.push(data.splice(0, optNum))
    return arraySlice(data, array, optNum)
}

//对象参数转为以？&拼接的字符
export function paramsToStr(params) {
    let p = ''
    if (typeof params == 'object') {
        p = '?'
        for (let props in params) {
            p += `${props}=${params[props]}&`
        }
        p = p.slice(0, -1)
    }
    return p
}

//分页加载
export async function loadingFun(fun, page, dataList = [], status, params) {
    // 拷贝对象
    dataList = Object.assign([], dataList)
    if (status == loadingType.FINISHED) return false
    const { code, data } = await fun({
        page_no: page,
        ...params
    })
    uni.stopPullDownRefresh()
    if (code == 1) {
        let { list, more } = data
        dataList.push(...list)
        page = ++page
        if (!more) {
            status = loadingType.FINISHED
        }
        if (dataList.length <= 0) {
            status = loadingType.EMPTY
        }
    } else {
        status = loadingType.ERROR
    }
    return {
        page,
        dataList,
        status
    }
}

// 获取wxml元素

export function getRect(selector, all, context) {
    return new Promise(function (resolve) {
        let qurey = uni.createSelectorQuery()

        if (context) {
            qurey = uni.createSelectorQuery().in(context)
        }

        qurey[all ? 'selectAll' : 'select'](selector)
            .boundingClientRect(function (rect) {
                if (all && Array.isArray(rect) && rect.length) {
                    resolve(rect)
                }
                if (!all && rect) {
                    resolve(rect)
                }
            })
            .exec()
    })
}

// 将px转为prx并添加单位
export function px2rpx(value) {
    if (!value) return 0
    const rpxValue = value / (uni.upx2px(100) / 100)
    return rpxValue
}
// 轻提示
export function toast(info = {}, navigateOpt) {
    let title = info.title || ''
    let icon = info.icon || 'none'
    let endtime = info.endtime || 2000
    if (title)
        uni.showToast({
            title: title,
            icon: icon,
            duration: endtime
        })
    if (navigateOpt != undefined) {
        if (typeof navigateOpt == 'object') {
            let tab = navigateOpt.tab || 1,
                url = navigateOpt.url || ''
            switch (tab) {
                case 1:
                    //跳转至 table
                    setTimeout(function () {
                        uni.switchTab({
                            url: url
                        })
                    }, endtime)
                    break
                case 2:
                    //跳转至非table页面
                    setTimeout(function () {
                        uni.navigateTo({
                            url: url
                        })
                    }, endtime)
                    break
                case 3:
                    //返回上页面
                    setTimeout(function () {
                        uni.navigateBack({
                            delta: parseInt(url)
                        })
                    }, endtime)
                    break
                case 4:
                    //关闭当前所有页面跳转至非table页面
                    setTimeout(function () {
                        uni.reLaunch({
                            url: url
                        })
                    }, endtime)
                    break
                case 5:
                    //关闭当前页面跳转至非table页面
                    setTimeout(function () {
                        uni.redirectTo({
                            url: url
                        })
                    }, endtime)
                    break
            }
        } else if (typeof navigateOpt == 'function') {
            setTimeout(function () {
                navigateOpt && navigateOpt()
            }, endtime)
        }
    }
}

// //菜单跳转
// export function menuJump(item) {
//     const { is_tab, link, link_type } = item
//     switch (link_type) {
//         case 1:
//             // 本地跳转
//             if (is_tab) {
//                 uni.switchTab({
//                     url: link
//                 })
//                 return
//             }
//             uni.navigateTo({
//                 url: link
//             })
//             break

//         case 2:
//             // webview
//             uni.navigateTo({
//                 url: '/pages/webview/webview?url=' + link
//             })
//             break

//         case 3: // tabbar
//     }
// }
//菜单跳转
export function menuJump(item) {
    const { is_tab, link, link_type, category_id, mnp_params } = item
    if (is_tab) {
        uni.switchTab({
            url: link
        })
        return
    } else {
        switch (
            link_type //link_type -0基础页面 1-普通商品 2-租赁商品 3-商品分类 4-租赁分类 5-自定义链接 6-微信小程序
        ) {
            case 0:
                uni.navigateTo({
                    url: link
                })
                break
            case 1:
                uni.navigateTo({
                    url: link
                })
                break
            case 2:
                uni.navigateTo({
                    url: link
                })
                break
            case 3:
                uni.navigateTo({
                    url: link + '?id=' + category_id
                })
                break
            case 4:
                uni.navigateTo({
                    url: link + '?category_id=' + category_id
                })
                break
            case 5:
                // webview
                uni.navigateTo({
                    url: '/pages/webview/webview?url=' + link
                })
                break
            case 6:
                wx.navigateToMiniProgram({
                    appId: mnp_params.mnp_app_id,

                    path: mnp_params.mnp_path
                })
                break
        }
    }
}

/**
 * @description 图片完整域名
 * @param uri { string } 图片链接
 * @return { string }
 */
export const getImageUri = (uri = '') => {
    const oss_domain = store.getters.appConfig.domain || ''
    return oss_domain + uri
}
export function uploadFile(path) {
    return new Promise((resolve, reject) => {
        uni.uploadFile({
            url: baseURL + 'file/formimage',
            filePath: path,
            name: 'file',
            header: {
                token: store.getters.token
            },
            fileType: 'image',
            cloudPath: '',
            success: (res) => {
                console.log('uploadFile res ==> ', res)
                let data = JSON.parse(res.data)

                if (data.code == 1) {
                    resolve(data.data)
                } else {
                    reject()
                }
            },
            fail: (err) => {
                console.log(err)
                reject()
            }
        })
    })
}

//当前页面

export function currentPage() {
    let pages = getCurrentPages()
    let currentPage = pages[pages.length - 1]
    return currentPage || {}
}

// H5复制方法
export function copy(str) {
    // #ifdef H5
    let aux = document.createElement('input')
    aux.setAttribute('value', str)
    document.body.appendChild(aux)
    aux.select()
    document.execCommand('copy')
    document.body.removeChild(aux)
    uni.showToast({
        title: '复制成功'
    })
    // #endif

    // #ifndef H5
    uni.setClipboardData({
        data: str.toString(),
        success() {
            uni.showToast({
                title: '复制成功',
                icon: 'success'
            })
        }
    })
    // #endif
}

export function setTabbar() {
    const config = store.getters.appConfig
    uni.setTabBarStyle({
        color: config.navigation_setting.ust_color,
        selectedColor: config.navigation_setting.st_color
    })
    // #ifdef APP-PLUS
    config.navigation_menu.forEach((item, index) => {
        uni.downloadFile({
            url: item.un_selected_icon,
            success: (res) => {
                uni.setTabBarItem({
                    index,
                    iconPath: res.tempFilePath
                })
            }
        })
        uni.downloadFile({
            url: item.un_selected_icon,
            success: (res) => {
                uni.setTabBarItem({
                    index,
                    iconPath: res.tempFilePath
                })
            }
        })
        uni.downloadFile({
            url: item.selected_icon,
            success: (res) => {
                uni.setTabBarItem({
                    index,
                    selectedIconPath: res.tempFilePath
                })
            }
        })
    })
    // #endif
    // #ifndef APP-PLUS
    config.navigation_menu.forEach((item, index) => {
        uni.setTabBarItem({
            index,
            text: item.name,
            iconPath: item.un_selected_icon,
            selectedIconPath: item.selected_icon,
			visible:item.status == 1 ? true : false,
            fail(res) {
                console.log(res)
            },
            success(res) {
                console.log(res)
            }
        })
    })
    // #endif
    uni.showTabBar()
}

// 格式化输出价格
export function formatPrice(price, type, prec = 2) {
    const list = (price + '').split('.')
    let integer = list[0]
    let decimals = list[1] || ''
    switch (type) {
        case 'integer':
            return integer
        case 'decimals':
            const LEN = decimals.length
            for (let i = prec - LEN; i > 0; --i) decimals += '0'
            return '.' + decimals.substr(0, prec) || '0'
        default:
            return price
    }
}

// tabbar页面路径
export const tabbarList = [
    'pages/lend_lease/lend_lease',
    'pages/lease/lease',
    'pages/user/user',
    'pages/index/index',
    'pages/recycle/recycle'
]
// 登录注册相关
export const acountList = [
    'pages/login/login',
    'pages/forget_pwd/forget_pwd',
    'pages/register/register'
]
